home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / socket / miami3 / miamisdk / netinclude / netinet / ip6_opts.h < prev    next >
C/C++ Source or Header  |  1998-05-24  |  3KB  |  93 lines

  1. #ifndef _NETINET_IP6_OPTS_H_
  2. #define _NETINET_IP6_OPTS_H_
  3.  
  4. #ifndef _SYS_TYPES_H_
  5. #include <sys/types.h>
  6. #endif
  7.  
  8. #ifndef _NETINET_IN_H_
  9. #include <netinet/in.h>
  10. #endif
  11.  
  12. /*
  13.  * Definition of IPv6 options and extensions for Neighbor Discovery
  14.  */
  15. #define OPT6_PAD_0        0    /* Single Pad */
  16. #define OPT6_PAD_N        1    /* Multiple Pad */
  17. #define OPT6_JUMBO        194    /* Jumbo-Payload */
  18.  
  19. #define NDX6_LLADDR_SRC        1    /* Source Link-layer Address */
  20. #define NDX6_LLADDR_TGT        2    /* Target Link-layer Address */
  21. #define NDX6_PREF_INFO        3    /* Prefix-Information */
  22. #define NDX6_RDRT_HDR        4    /* Redirected-Header */
  23. #define NDX6_MTU        5    /* Maximum-Transmit-Unit */
  24.  
  25. /*
  26.  * Macros on type bits.
  27.  */
  28. #define    OPT6_ACTION(t)        ((t)&0xc0)    /* action */
  29. #define OPT6_A_SKIP        0x00        /* skip over */
  30. #define OPT6_A_DISC        0x40        /* discard */
  31. #define OPT6_A_FERR        0x80        /* already send error */
  32. #define OPT6_A_OERR        0xc0        /* send error */
  33. #define OPT6_RTCHANGE(t)    ((t)&0x20)    /* change en-route */
  34.  
  35. /*
  36.  * Options and Extensions layouts.
  37.  */
  38.  
  39. struct opt6_any {            /* common header */
  40.     u_int8_t    o6any_ext;    /* extension type */
  41.     u_int8_t    o6any_len;    /* length */
  42. };
  43.  
  44. struct opt6_jbo {            /* Jumbo-Payload */
  45.     u_int16_t    jbo_pad;    /* for alignment */
  46.     u_int8_t    jbo_ext;    /* extension type (194) */
  47.     u_int8_t    jbo_len;    /* length (4) */
  48.     u_int32_t    jbo_plen;    /* payload length */
  49. };
  50.  
  51. struct opt6_ra {            /* Router-Alert */
  52.     u_int8_t    ra_ext;        /* extension type (TBD) */
  53.     u_int8_t    ra_len;        /* length (2) */
  54.     u_int16_t    ra_code;    /* code */
  55. };
  56. #define OPT6_RA_GROUP    0        /* ICMPv6 Group Membership */
  57. #define OPT6_RA_RSVP    1        /* RSVP */
  58.  
  59. struct ndx6_any {            /* common header */
  60.     u_int8_t    x6any_ext;    /* extension type */
  61.     u_int8_t    x6any_len;    /* length */
  62.     u_int16_t    x6any_res1;    /* reserved */
  63.     u_int32_t    x6any_res2;    /* reserved */
  64. };
  65.  
  66. struct ndx6_lladdr {            /* Link-layer Address */
  67.     u_int8_t    lla_ext;    /* extension type (1 or 2) */
  68.     u_int8_t    lla_len;    /* length (>=1) */
  69.     u_int8_t    lla_addr[6];    /* media address */
  70. };
  71.  
  72. struct ndx6_pref {            /* Prefix-Information */
  73.     u_int8_t    pref_ext;    /* extension type (3) */
  74.     u_int8_t    pref_len;    /* length (4) */
  75.     u_int8_t    pref_plen;    /* prefix size (0..128) */
  76.     u_int8_t    pref_flg;    /* flags */
  77.     u_int32_t    pref_ilife;    /* invalidation lifetime */
  78.     u_int32_t    pref_dlife;    /* deprecation lifetime */
  79.     u_int32_t    pref_res2;
  80.     struct in6_addr    pref_pref;    /* prefix */
  81. };
  82. #define    NDX6_PREF_FLG_L    0x80        /* On-link flag */
  83. #define    NDX6_PREF_FLG_A    0x40        /* Address-configuration flag */
  84.  
  85. struct ndx6_mtu {            /* Maximum-Transmit-Unit */
  86.     u_int8_t    mtu_ext;    /* extension type (5) */
  87.     u_int8_t    mtu_len;    /* length (1) */
  88.     u_int16_t    mtu_res;    /* reserved (0) */
  89.     u_int32_t    mtu_mtu;    /* MTU value */
  90. };
  91.  
  92. #endif
  93.